$(document).ready(function(){
	$('#map_category_form').submit(function(){
		return false;
	});
	$('#category_level_1').change(function(){
		getCategory3();
	});
	$('#category_level_2').change(function(){
		getCategory3();
	});
	$('#category_not_exist').click(function(event){
		clickOnCategory($(event.target))
	});
	$('#category_exist').click(function(event){
		clickOnCategory($(event.target))
	});
	$('#btn_not_to_exist').click(function(){
		$('#category_not_exist li').each(function(index){
			if($(this).attr('class') == CHOICE_CATEGORY){
				addExist($(this).val(), $(this).text());
				$(this).remove();
			}
		});
	});
	
	$('#btn_all_not_to_exist').click(function(){
		$('#category_not_exist li').each(function(index){
			addExist($(this).val(), $(this).text());
			$(this).remove();
		});
	});
	
	$('#btn_exist_to_not').click(function(){
		$('#category_exist li').each(function(index){
			if($(this).attr('class') == CHOICE_CATEGORY){
				addNotExist($(this).val(), $(this).text());
				$(this).remove();
			}
		});
	});
	
	$('#btn_all_exist_to_not').click(function(){
		$('#category_exist li').each(function(index){
			addNotExist($(this).val(), $(this).text());
			$(this).remove();
		});
	});
	
	$('#btn_update_map_category').click(function(){
		updateMapCategory();
	});
});

function getCategory3(){
	var category_level_1 = $('#category_level_1').val();
	var category_level_2 = $('#category_level_2').val();
	if(category_level_2 > 0 && category_level_1 > 0){
		$('#btn_all_exist_to_not').click();
		$('#submit_error').html('');
		var data = {
			category_level_1_id: category_level_1,
			category_level_2_id: category_level_2
		};
		var request = {
			url: base_url + GET_MAP_CATEGORY,
			type: 'POST',
			data: data,
			success: function(data){
				if(data){
					data = JSON.parse(data);
					data.forEach(function(category){
						removeNotExist(category.id);
						addExist(category.id, category.vi_name);
					});
				} else {
					$('#submit_error').html(ERROR_ID_NOT_FOUND);
				}
			},
			error: function(error){
				$('#submit_error').html(ERROR_ID_NOT_FOUND);
			}
		};
		excuteAjax(request);
	} else {
		$('#submit_error').html(ERROR_INVALID_ID);
	}
}

function updateMapCategory(){
	var category_level_2 = $('#category_level_2').val();
	var category_level_1 = $('#category_level_1').val();
	if(category_level_2 > 0 && category_level_1 > 0){
		$('#submit_error').html('');
		var list_category_level_3 = [];
		$('#category_exist li').each(function(index){
			list_category_level_3.push($(this).val());
		});
		console.log(list_category_level_3);
		var data = {
			category_level_1_id: category_level_1,
			category_level_2_id: category_level_2,
			list_category_level_3: list_category_level_3
		};
		var request = {
			url: base_url + UPDATE_MAP_CATEGORY,
			type: 'POST',
			data: data,
			success: function(data){
				if(data){
					$('#submit_error').html(RESPONSE_SUCCESS);
				} else {
					$('#submit_error').html(RESPONSE_ERROR);
				}
				$('btn_all_exist_to_not').click();
			},
			error: function(error){
				$('#submit_error').html(RESPONSE_ERROR);
			}
		};
		excuteAjax(request);
	} else {
		$('#submit_error').html(ERROR_INVALID_ID);
	}
}

function removeNotExist(category_level_3_id){
	console.log('remove ' + category_level_3_id);
	$('#category_not_exist li').each(function(index){
		if($(this).val() == category_level_3_id){
			$(this).remove();
		}
	});
}

function addExist(category_level_3_id, vi_name){
	$('#category_exist').append(drawLi(category_level_3_id, vi_name));
}

function addNotExist(category_level_3_id, vi_name){
	$('#category_not_exist').append(drawLi(category_level_3_id, vi_name));
}

function drawLi(category_level_3_id, vi_name){
	return $('<li/>', {
			value: category_level_3_id,
			class: UN_CHOICE_CATEGORY,
			text: vi_name
		});
}

function clickOnCategory(target){
	if(target.attr('class') == UN_CHOICE_CATEGORY){
		target.removeClass(UN_CHOICE_CATEGORY);
		target.addClass(CHOICE_CATEGORY);
	} else {
		target.removeClass(CHOICE_CATEGORY);
		target.addClass(UN_CHOICE_CATEGORY);
	}
}